<!--
  Copyright JS Foundation and other contributors, http://js.foundation

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<script type="text/html" data-help-name="csv">
    <p>CSV形式の文字列とそのJavaScriptオブジェクト表現の間で双方向の変換を行います。</p>
    <h3>入力</h3>
    <dl class="message-properties">
        <dt>payload<span class="property-type">オブジェクト | 配列 | 文字列</span></dt>
        <dd>JavaScriptオブジェクト、配列、CSV文字列のいずれか</dd>
    </dl>
    <h3>出力</h3>
    <dl class="message-properties">
        <dt>payload<span class="property-type">オブジェクト | 配列 | 文字列</span></dt>
        <dd>
        <ul>
            <li>入力が文字列の場合、CSVとして解釈し、CSVの各行をキー/バリューとしたJavaScriptオブジェクトを生成します。各行毎にメッセージを送信するかオブジェクトの配列からなる一つのメッセージを送信するかを選択できます。</li>
            <li>入力がJavaScriptオブジェクトの場合、CSV文字列への変換を行います。</li>
            <li>入力が基本型の配列の場合、1行のCSV文字列へ変換します。</li>
            <li>入力が配列の配列、もしくは、オブジェクトの配列の場合、複数行のCSV文字列へ変換します。</li>
        </ul>
        </dd>
    </dl>
    <h3>詳細</h3>
    <p>「列名」にカラム名のリストを指定することができます。CSVからオブジェクトに変換を行う際、カラム名をプロパティ名として使用します。「列名」の代わりに、CSVデータの1行目にカラム名を含めることもできます。
        <p>RFCパーサが選択されている場合、列のテンプレートはRFC4180に準拠する必要があります。</p>
    </p>
    <p>CSVへの変換を行う際には、オブジェクトから取り出すべきプロパティとその順序を「列名」を参照して決めます。</p>
    <p>列名がない場合、本ノードは<code>msg.columns</code>プロパティの単純なコンマ区切りリストを使用して、何をどの順序で抽出するかを決定します。もし存在しない場合、すべてのオブジェクトプロパティを見つけた順序で出力します。</p>
    <p>入力が配列の場合には、「列名」はカラム名を表す行の出力指定がされた場合だけ用います。</p>
    <p>「数値を変換する」オプションがチェックされている場合、文字列型の数値が数値として返されます。つまり「1,"1.5",2」の真ん中の値が数値になります。</p>
    <p>「空の文字を含む」オプションがチェックされている場合、空の文字列が結果に返されます。つまり「"1","",3」の真ん中の値が空の文字列になります。</p>
    <p>「null値を含む」オプションがチェックされている場合、null値が結果に返されます。つまり「"1",,3」の真ん中の値がnullになります。</p>
    <p>file-inノードやsplitノードが出力するメッセージの様に、<code>parts</code>プロパティが正しく設定されている場合、メッセージ列を入力として受け付けます。</p>
    <p>CSVを複数のメッセージに変換して出力する場合、出力がメッセージ列となるよう<code>parts</code>プロパティを設定します。</p>
    <p>ヘッダを一度だけ送信するよう設定している場合、任意の値を持つ<code>msg.reset</code>を渡すと、再度ヘッダを含めて送信できるようになります。</p>
    <p><b>注:</b> カンマ以外の区切り文字を設定した場合であっても、「列名」はカンマ区切りとしてください。</p>
</script>
